<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta http-equiv="cache-control" content="no-cache">
<title>absmatcher.h File Reference</title>
<link href="doxygen_tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="doxygen_content.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="top">
 <div id="titlearea">
  <table height="72px" width="100%" cellspacing="0" cellpadding="0">
   <tbody>
    <tr>
     <td width="10%">&nbsp;</td>
     <td><a href="https://github.com/Genivia/RE-flex"><img src="reflex-logo.png"/></a></td>
     <td>
      <div style="float: right; font-size: 18px; font-weight: bold;">absmatcher.h File Reference</div>
      <br>
      <div style="float: right; font-size: 10px;">updated Fri Nov 22 2019 by Robert van Engelen</div>
     </td>
     <td width="10%">&nbsp;</td>
    </tr>
   </tbody>
  </table>
 </div>
<!-- Generated by Doxygen 1.8.11 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_d44c64559bbebec7f509842c48db8b23.html">include</a></li><li class="navelem"><a class="el" href="dir_bb8a7beb94a1b7afd52842cbf47ddd3e.html">reflex</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#namespaces">Namespaces</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">absmatcher.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>RE/flex abstract matcher base class and pattern matcher class.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;<a class="el" href="convert_8h.html">reflex/convert.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="debug_8h.html">reflex/debug.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="input_8h.html">reflex/input.h</a>&gt;</code><br />
<code>#include &lt;<a class="el" href="traits_8h.html">reflex/traits.h</a>&gt;</code><br />
<code>#include &lt;cstdlib&gt;</code><br />
<code>#include &lt;cctype&gt;</code><br />
<code>#include &lt;iterator&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for absmatcher.h:</div>
<div class="dyncontent">
<div class="center"><img src="absmatcher_8h__incl.png" border="0" usemap="#absmatcher_8h" alt=""/></div>
<map name="absmatcher_8h" id="absmatcher_8h">
<area shape="rect" id="node2" href="convert_8h.html" title="RE/flex regex converter. " alt="" coords="95,80,208,107"/>
<area shape="rect" id="node7" href="debug_8h.html" title="RE/flex debug logs and assertions. " alt="" coords="245,80,351,107"/>
<area shape="rect" id="node9" href="input_8h.html" title="RE/flex input character sequence class. " alt="" coords="389,80,487,107"/>
<area shape="rect" id="node14" href="traits_8h.html" title="Type traits for (non&#45;)const type inference. " alt="" coords="511,80,610,107"/>
<area shape="rect" id="node3" href="error_8h.html" title="RE/flex regex errors. " alt="" coords="5,155,103,181"/>
<area shape="rect" id="node10" href="utf8_8h.html" title="RE/flex UCS to UTF&#45;8 converters. " alt="" coords="392,155,484,181"/>
</map>
</div>
</div><div class="textblock"><div class="dynheader">
This graph shows which files directly or indirectly include this file:</div>
<div class="dyncontent">
<div class="center"><img src="absmatcher_8h__dep__incl.png" border="0" usemap="#absmatcher_8hdep" alt=""/></div>
<map name="absmatcher_8hdep" id="absmatcher_8hdep">
<area shape="rect" id="node2" href="abslexer_8h.html" title="RE/flex abstract lexer base class for reflex&#45;generated scanners. " alt="" coords="5,80,89,107"/>
<area shape="rect" id="node4" href="boostmatcher_8h.html" title="Boost::regex&#45;based matcher engines for pattern matching. " alt="" coords="113,80,227,107"/>
<area shape="rect" id="node5" href="matcher_8h.html" title="RE/flex matcher engine. " alt="" coords="251,80,332,107"/>
<area shape="rect" id="node6" href="stdmatcher_8h.html" title="C++11 std::regex&#45;based matcher engines for pattern matching. " alt="" coords="357,80,455,107"/>
<area shape="rect" id="node3" href="flexlexer_8h.html" title="RE/flex Flex&#45;compatible FlexLexer base class and Lex/Flex&#45;compatible macros. " alt="" coords="6,155,89,181"/>
</map>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classreflex_1_1_abstract_matcher.html">reflex::AbstractMatcher</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The abstract matcher base class template defines an interface for all pattern matcher engines.  <a href="classreflex_1_1_abstract_matcher.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_abstract_matcher_1_1_const.html">reflex::AbstractMatcher::Const</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="structreflex_1_1_abstract_matcher_1_1_const.html" title="AbstractMatcher::Const common constants. ">AbstractMatcher::Const</a> common constants.  <a href="structreflex_1_1_abstract_matcher_1_1_const.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreflex_1_1_abstract_matcher_1_1_option.html">reflex::AbstractMatcher::Option</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">AbstractMatcher::Options for matcher engines.  <a href="structreflex_1_1_abstract_matcher_1_1_option.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classreflex_1_1_abstract_matcher_1_1_iterator.html">reflex::AbstractMatcher::Iterator&lt; T &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classreflex_1_1_abstract_matcher_1_1_iterator.html" title="AbstractMatcher::Iterator class for scanning, searching, and splitting input character sequences...">AbstractMatcher::Iterator</a> class for scanning, searching, and splitting input character sequences.  <a href="classreflex_1_1_abstract_matcher_1_1_iterator.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classreflex_1_1_abstract_matcher_1_1_operation.html">reflex::AbstractMatcher::Operation</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classreflex_1_1_abstract_matcher_1_1_operation.html" title="AbstractMatcher::Operation functor to match input to a pattern, also provides a (const) AbstractMatch...">AbstractMatcher::Operation</a> functor to match input to a pattern, also provides a (const) <a class="el" href="classreflex_1_1_abstract_matcher.html#a7237c1fb8ab2a2283117739e6516c31f" title="std::input_iterator for scanning, searching, and splitting input character sequences ...">AbstractMatcher::iterator</a> to iterate over matches.  <a href="classreflex_1_1_abstract_matcher_1_1_operation.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classreflex_1_1_pattern_matcher.html">reflex::PatternMatcher&lt; P &gt;</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">The pattern matcher class template extends abstract matcher base class.  <a href="classreflex_1_1_pattern_matcher.html#details">More...</a><br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacereflex"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacereflex.html">reflex</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a848ff944c984502c0739b440d647f0ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="absmatcher_8h.html#a848ff944c984502c0739b440d647f0ce">WITH_REALLOC</a></td></tr>
<tr class="memdesc:a848ff944c984502c0739b440d647f0ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">This compile-time option speeds up buffer reallocation.  <a href="#a848ff944c984502c0739b440d647f0ce">More...</a><br /></td></tr>
<tr class="separator:a848ff944c984502c0739b440d647f0ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a52b73659b2f527a60c6b59f43b8e511a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="absmatcher_8h.html#a52b73659b2f527a60c6b59f43b8e511a">WITH_FAST_GET</a></td></tr>
<tr class="memdesc:a52b73659b2f527a60c6b59f43b8e511a"><td class="mdescLeft">&#160;</td><td class="mdescRight">This compile-time option speeds up matching, but slows input().  <a href="#a52b73659b2f527a60c6b59f43b8e511a">More...</a><br /></td></tr>
<tr class="separator:a52b73659b2f527a60c6b59f43b8e511a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d45f91056db597182a27328a402bbc1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="absmatcher_8h.html#a2d45f91056db597182a27328a402bbc1">WITH_SPAN</a></td></tr>
<tr class="memdesc:a2d45f91056db597182a27328a402bbc1"><td class="mdescLeft">&#160;</td><td class="mdescRight">This compile-time option adds span(), line(), wline(), speeds up buffer shifting and lineno().  <a href="#a2d45f91056db597182a27328a402bbc1">More...</a><br /></td></tr>
<tr class="separator:a2d45f91056db597182a27328a402bbc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a10f9faa3bb7ef4d3cee8339b8e647875"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacereflex.html#a10f9faa3bb7ef4d3cee8339b8e647875">reflex::isword</a> (int c)</td></tr>
<tr class="memdesc:a10f9faa3bb7ef4d3cee8339b8e647875"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check ASCII word-like character <code>[A-Za-z0-9_]</code>, permitting the character range 0..303 (0x12F) and EOF.  <a href="namespacereflex.html#a10f9faa3bb7ef4d3cee8339b8e647875">More...</a><br /></td></tr>
<tr class="separator:a10f9faa3bb7ef4d3cee8339b8e647875"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa29c62aabb204029d177a4669af6235b"><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="absmatcher_8h.html#aa29c62aabb204029d177a4669af6235b">operator&lt;&lt;</a> (std::ostream &amp;os, const <a class="el" href="classreflex_1_1_abstract_matcher.html">reflex::AbstractMatcher</a> &amp;matcher)</td></tr>
<tr class="memdesc:aa29c62aabb204029d177a4669af6235b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write matched text to a stream.  <a href="#aa29c62aabb204029d177a4669af6235b">More...</a><br /></td></tr>
<tr class="separator:aa29c62aabb204029d177a4669af6235b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace29cf38746d9378bb1b5ec628ea1d02"><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="absmatcher_8h.html#ace29cf38746d9378bb1b5ec628ea1d02">operator&gt;&gt;</a> (std::istream &amp;is, <a class="el" href="classreflex_1_1_abstract_matcher.html">reflex::AbstractMatcher</a> &amp;matcher)</td></tr>
<tr class="memdesc:ace29cf38746d9378bb1b5ec628ea1d02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read stream and store all content in the matcher's buffer.  <a href="#ace29cf38746d9378bb1b5ec628ea1d02">More...</a><br /></td></tr>
<tr class="separator:ace29cf38746d9378bb1b5ec628ea1d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>RE/flex abstract matcher base class and pattern matcher class. </p>
<dl class="section author"><dt>Author</dt><dd>Robert van Engelen - <a href="#" onclick="location.href='mai'+'lto:'+'eng'+'el'+'en@'+'ge'+'niv'+'ia'+'.co'+'m'; return false;">engel<span style="display: none;">.nosp@m.</span>en@g<span style="display: none;">.nosp@m.</span>enivi<span style="display: none;">.nosp@m.</span>a.co<span style="display: none;">.nosp@m.</span>m</a> </dd></dl>
<dl class="section copyright"><dt>Copyright</dt><dd>(c) 2015-2019, Robert van Engelen, Genivia Inc. All rights reserved. </dd>
<dd>
(c) BSD-3 License - see LICENSE.txt </dd></dl>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a52b73659b2f527a60c6b59f43b8e511a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_FAST_GET</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This compile-time option speeds up matching, but slows input(). </p>

</div>
</div>
<a class="anchor" id="a848ff944c984502c0739b440d647f0ce"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_REALLOC</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This compile-time option speeds up buffer reallocation. </p>

</div>
</div>
<a class="anchor" id="a2d45f91056db597182a27328a402bbc1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define WITH_SPAN</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This compile-time option adds span(), line(), wline(), speeds up buffer shifting and lineno(). </p>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="aa29c62aabb204029d177a4669af6235b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; operator&lt;&lt; </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classreflex_1_1_abstract_matcher.html">reflex::AbstractMatcher</a> &amp;&#160;</td>
          <td class="paramname"><em>matcher</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Write matched text to a stream. </p>

</div>
</div>
<a class="anchor" id="ace29cf38746d9378bb1b5ec628ea1d02"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::istream&amp; operator&gt;&gt; </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>is</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classreflex_1_1_abstract_matcher.html">reflex::AbstractMatcher</a> &amp;&#160;</td>
          <td class="paramname"><em>matcher</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Read stream and store all content in the matcher's buffer. </p>

</div>
</div>
</div><!-- contents -->
<hr class="footer">
<address class="footer"><small>
Converted on Fri Nov 22 2019 14:30:50 by <a target="_blank" href="http://www.doxygen.org/index.html">Doxygen</a> 1.8.11</small></address>
<br>
<div style="height: 246px; background: #DBDBDB;">
</body>
</html>
